/*
 * @Descripttion: 
 * @version: 
 * @Author: Ansel
 * @Date: 2020-03-24 08:41:33
 * @LastEditors: Ansel
 * @LastEditTime: 2020-03-24 09:40:44
 */
// function curryCall(val) {
//     let sum = val ** 2;
//     function fn(next) {
//         sum += next ** 2;
//         return fn;
//     }
//     fn.valueOf = () => sum;
//     fn.value = sum;
//     return fn;
// }
// console.log(curryCall(1)(2))

function sqrt(n,m){
    return n * n + m*m;
}
function Curry(func){
    var args = [].slice.call(arguments,1);
    return function(){
        var subArgs = [].slice.call(arguments);
        var newArgs = args.concat(subArgs);
        if(newArgs.length >= func.length){
            return func.apply(null,newArgs);
        }else{
            newArgs.unshift(func);
            return Curry.apply(null,newArgs);
        }
    }
}

var add = Curry(sqrt);
console.log(add(1)(2))